import Vue from 'vue'
import Vuex from 'vuex'
import { goLogin } from "../api/testApi/account";
// 引入购物车状态模块
import { carStore } from './cart'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    // 存token，方便获取token值
    token: window.sessionStorage.getItem("token"),
    // 存用户登录的信息
    userInfo: [],
    // 是否登录，默认未登录
    isAuth: false
  },
  mutations: {
    // 设置用户信息
    setUserInfo(state, payload) {
      // 修改登录状态和信息
      state.userInfo = payload;
      state.isAuth = true;
      // vuex的数据持久化
      window.localStorage.setItem("userInfo", JSON.stringify(payload));
    },
    // 设置token值(将token令牌存到浏览器缓存)
    setToken(state, payload) {
      state.token = payload;
      window.sessionStorage.setItem("token", payload);
    },
    // 清空token值(修改store、浏览器缓存、登录状态)
    clearToken(state) {
      state.token = '';
      state.isAuth = false;
      window.sessionStorage.removeItem("token");
      window.localStorage.removeItem("userInfo");
    }
  },
  actions: {
    // 登录，获取token和用户信息
    loginAction(context, inpVal) {
      // console.log(context, inpVal);
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          // 返回的数据
          const res = goLogin({
            phone: inpVal.phone,
            password: inpVal.password
          });
          // 成功返回数据
          resolve(res);
        }, 500)
      }).then(res => {
        // console.log(res);
        if (res.status == 200) {
          // 获取用户信息并设置状态
          context.commit("setUserInfo", res.data.result);
          context.commit("setToken", res.data.result.token);
          alert("登录成功，现在为您自动跳转到首页");
        }
      }).catch(err => {
        alert("登录失败，请检查您填写的信息");
        console.log(err);
      })
    },

  },
  modules: {
    carStore
  }
})
